#include <stdio.h>
#include<vector>
void change(int a[5][5], int x, int y)
{
	a[x][y] ^= 1;
	if (x > 0)
		a[x - 1][y] ^= 1;
	if (x < 4)
		a[x + 1][y] ^= 1;
	if (y > 0)
		a[x][y - 1] ^= 1;
	if (y < 4)
		a[x][y + 1] ^= 1;
}
int search(int a[5][5], int cur, int t0)
{
	int i;
	int n;
	int j;
	int re;
	int copy[5][5];
	int p, q;
	if (cur == 0)
	{
		for (p = 0; p < 5; p++)
			for (q = 0; q < 5; q++)
				copy[p][q] = a[p][q];
		for (i = 0; i < 32; i++)
		{
			t0 = 0;
			n = i;
			for (j = 0; j < 5; j++)
			{
				if (n & (1 << j))
				{
					t0++;
					change(a, 0, j);
				}
			}
			re = search(a, 1, t0);
			if (re == 0)
				return 0;
			for (p = 0; p < 5; p++)
				for (q = 0; q < 5; q++)
					a[p][q] = copy[p][q];
		}
	}
	else
	{
		for (i = 0; i < 4; i++)
		{
			for (j = 0; j < 5; j++)
				if (a[i][j] == 0)
					t0++;
			if (t0 > 6)
				return -1;
			for (j = 0; j < 5; j++)
				if (a[i][j] == 0)
					change(a, i + 1, j);
		}

		for (i = 0; i < 5; i++)
			if (a[4][i] == 0)
				break;
		if (i == 5)
		{
			printf("%d\n", t0);
			return 0;
		}
		else
			return -1;
	}

	return -1;
}
int main()
{
	int n = 0;
	int i, j;
	int a[5][5];
	int ngl=0;
	int igl=0;
	char s[6];
	while (scanf("%d", &ngl)!=EOF)
	{
		gets(s);
		for (igl = 0; igl < ngl; igl++)
		{
			for (i = 0; i < 5; i++)
			{
				gets(s);
				for (j = 0; j < 5; j++)
					a[i][j] = s[j] - '0';
			}
			if (search(a, 0, 0) == -1)
				printf("-1\n");
			gets(s);
		}
	}
	return 0;
}